package 开闭原则;

import 开闭原则.classes.Car;
import 开闭原则.classes.CarSkin;
import 开闭原则.classes.DefaultCar;
import 开闭原则.classes.WhiteCar;

public class OpenClosedPrinciple 
{
	public static void main(String[] args) 
	{
		//开闭原则：对扩展开放，但对代码修改关闭
		
		//使用默认的
		Car car = new Car(new DefaultCar());
		car.getCarSkin().display();
		
		//在没有修改代码的情况下使用了不同功能
		//使用白色皮肤
		Car whiteCar = new Car(new WhiteCar());
		whiteCar.getCarSkin().display();
		
		//如果想要再添加功能,只需要写一个类继承CarSkin抽象类,例子：
		class BlackCar extends CarSkin
		{
			@Override
			public void display() {
				System.out.println("显示黑色颜色");
			}
		}
		Car blackCar = new Car(new BlackCar());
		blackCar.getCarSkin().display();
		//可以使用set方法，而不是构造方法
	}
}
